Sesión 2 - Tidyverse y herramientas para datos

Taller introductorio a R

Benjamín Adasme

2025-10-27

Recapitulando

  • Sintaxis básica de R
  • Tipos de archivos y estructuras de datos
  • Funciones básicas

Solución desafío 1

Sesión 2

Paquetes o packages

Una ventaja de R es su gran comunidad que desarrolla mejoras y utilidades que quedan a disposición de forma gratuita.

Estos se difunden como “paquetes”, con su propio nombre, y que contienen funciones, datos u otros para agregar o mejorar funciones de R.

La gran mayoría se alberga en CRAN, otros en servidores como Github.

  • Para instalar un paquete utilizamos la función install.packages() solo la primera vez que utilicemos ese paquete. Luego de esto queda instalado en nuestro equipo.

  • Pero para usarlo debemos utilizar otra función llamada library(), que activa el paquete en la sesión actual.

  • Alternativamente, podemos usar una función de un paquete instalado sin activarlo en la sesión, usando ::. Ejemplo: readr::read_csv(...). Solo es útil cuando es explícito que se use la función de ese paquete y no otra.

Ejemplo

Vamos a instalar un paquete útil que se llama janitor y sirve para limpiar datos.

Primero lo instalamos desde CRAN

install.packages("janitor") #siempre con comillas

Una vez instalado se “invoca” o se activa en la sesión para usarlo

library(janitor) #No es necesario poner las comillas 

Introducción al tidyverse

  • Grupo de paquetes para la ciencia de datos en R
  • Paradigma de programación en R
  • Desarrollado por Posit (igual que Rstudio)

Formato ordenado o “tidy”

Es un concepto en tidyverse para trabajar con datos rectangulares

  • Cada variable debe tener su propia columna.
  • Cada observación debe tener su propia fila.
  • Cada valor debe tener su propia celda.

R para ciencia de datos

Flujo de trabajo en ciencia de datos. Wickham & Grolemund, 2023

Núcleo de tidyverse

Paquetes y funciones clave

Importar datos

¿Cómo cargar archivos en R?
Tipo de archivo Función Paquete Tidyverse Núcleo
.csv read.csv base No NA
.rds readRDS base No NA
.csv read_csv readr
.xlsx/.xls read_xlsx/read_xls readxl No
.sav read_sav haven No
.dta read_dta haven No
.sas read_sas haven No
Planilla Google Sheets read_sheet googlesheets4 No

Dar formato a los datos

Paquete Descripción Funciones clave
tibble Crea la estructura de datos tibble, basada en data.frame pero con mejorar para manipulación de datos en el tidyverse. tibble()
tidyr Herramientas para manipular la forma de un tibble en formato tidy pivot_wider(), pivot_longer()

Tareas de limpieza

  • Renombrar columnas a nombres más eficientes. Puede ser con rename() de dplyr o con la mágica clean_names() de janitor.
  • Revisar que los formatos hayan sido correctamente importados
  • Eliminar columnas sin información o redundantes

Transformar o “domar” datos

  • Filtrar o elegir las observaciones por sus valores (filter() — del inglés filtrar).
  • Reordenar las filas (arrange() — del inglés organizar).
  • Seleccionar las variables por sus nombres (select() — del inglés seleccionar).
  • Crear nuevas variables con transformaciones de variables existentes (mutate() — del inglés mutar o transformar).
  • Contraer muchos valores en un solo resumen (summarise() — del inglés resumir).

dplyr

  • Es el paquete por defecto para manipular datos en R. Las funciones antes mencionadas son parte de dplyr.
  • Se suma a otros paquetes específicos para tratar ciertos tipos de datos

Todas estas funciones se pueden aplicar de manera agrupada con la función group_by(). Queda mejor cuando la usamos con summarise()

Pipas o tuberías

El comando pipe reduce la redundancia de crear demasiados objetos para un fin.

Encadena las funciones una dentro de otra

Existe el pipe de magrittr %>% y el pipe nativo |>

Forma tradicional

pinguinos <- palmerpenguins::penguins

summary(pinguinos)
      species          island    bill_length_mm  bill_depth_mm  
 Adelie   :152   Biscoe   :168   Min.   :32.10   Min.   :13.10  
 Chinstrap: 68   Dream    :124   1st Qu.:39.23   1st Qu.:15.60  
 Gentoo   :124   Torgersen: 52   Median :44.45   Median :17.30  
                                 Mean   :43.92   Mean   :17.15  
                                 3rd Qu.:48.50   3rd Qu.:18.70  
                                 Max.   :59.60   Max.   :21.50  
                                 NA's   :2       NA's   :2      
 flipper_length_mm  body_mass_g       sex           year     
 Min.   :172.0     Min.   :2700   female:165   Min.   :2007  
 1st Qu.:190.0     1st Qu.:3550   male  :168   1st Qu.:2007  
 Median :197.0     Median :4050   NA's  : 11   Median :2008  
 Mean   :200.9     Mean   :4202                Mean   :2008  
 3rd Qu.:213.0     3rd Qu.:4750                3rd Qu.:2009  
 Max.   :231.0     Max.   :6300                Max.   :2009  
 NA's   :2         NA's   :2                                 

ping_fil <- filter(pinguinos, year == 2008)


ping_orden <- arrange(ping_fil, body_mass_g)

ping_nuevo <- mutate(ping_orden, peso_kg = body_mass_g/1000)


summary(ping_nuevo$peso_kg)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  2.700   3.612   4.200   4.267   4.838   6.000 

Se crean tres objetos distintos para lograr el resultado

Con pipes

ping_2 <- pinguinos %>% 
  filter(year == 2008) %>% 
  arrange(body_mass_g) %>% 
  mutate(peso_kg = body_mass_g/1000)

Se crea un solo objeto.

“Trae los datos de pingüinos, LUEGO filtra por año == 2008, LUEGO ordena de menor a mayor según masa corporal, y LUEGO crea una nueva variable transformando la masa de gramos a kilogramos”

Último ejemplo: group_by

ping_2 %>% 
  group_by(species) %>% 
  summarise(aleta_prom_mm = mean(flipper_length_mm, na.rm = T))
# A tibble: 3 × 2
  species   aleta_prom_mm
  <fct>             <dbl>
1 Adelie             191.
2 Chinstrap          198.
3 Gentoo             218.

Ejercicio aplicado

Configuramos Rstudio

  • Setear algunas opciones del programa en Tools -> Global Options

  • Usar Rstudio Projects

En Rstudio

  • Vamos a cargar un dataset
  • Trabajaremos ahora las funciones aprendidas.

Desafío 2

Desafío de la sesión

Vamos a importar un dataset real, lo vamos a limpiar y luego a transformar.

Repetiremos el ejercicio de la clase, ahora otras variables que no incluimos en el ejercicio de la clase.

  1. Elegir dataset de Encuesta CEP o penguins
  2. Usar al menos 3 de las 6 funciones básicas de manipulación de datos: select, filter, summarise, mutate, group_by o arrange
  3. El resultado debe ser un cuadro resumen de alguna de las variables (tabla de frecuencia o resumen de estadísticos descriptivos)